ASP.NET 网页 (Razor) 故障排除指南 |
您所在的位置:网站首页 › iis 运行cshtml › ASP.NET 网页 (Razor) 故障排除指南 |
ASP.NET 网页 (Razor) 疑难解答指南
项目
07/13/2023
作者 Tom FitzMacken 本文介绍在使用 ASP.NET 网页 (Razor) 和一些建议的解决方案时可能遇到的问题。 软件版本 ASP.NET 网页 (Razor) 3本教程还适用于 ASP.NET 网页 2 和 ASP.NET 网页 1.0。 本主题包含以下各节: 运行页面的问题 Razor Code 的问题 安全性和成员身份问题 发送Email时出现问题 其他资源有关一般问题,请参阅 ASP.NET 网页 (Razor) 常见问题解答。 运行页面的问题各种问题可能会阻止 .cshtml 和 .vbhtml 页面正常运行。 本部分列出了常见的错误消息和可能的原因。 HTTP 错误 403 - 禁止访问:拒绝访问你无权使用提供的凭据查看此目录或页面。 如果服务器未运行正确版本的.NET Framework,则会发生此错误。 确保运行服务器的计算机 (本地或远程) 至少安装了 .NET Framework 4。 此外,请确保应用程序本身配置为运行正确的版本。 如果在 WebMatrix 中工作时在本地看到此问题,请单击“网站”工作区,然后在树视图中单击“设置”。 在“选择.NET Framework版本”列表中,选择“.NET 4 (集成) ”。 如果已设置此版本,请尝试以管理员身份运行 WebMatrix。 请确保网站的根目录中至少有一个 .cshtml 文件。 如果在 Web 服务器位于远程服务器上时看到此错误,请与服务器管理员联系。 确保服务器已安装 .NET Framework 4 或更高版本。 此外,请确保应用程序在配置为使用该版本的 the.NET Framework 的应用程序池中运行。 如果能够控制服务器,请确保它运行的是正确版本的.NET Framework。 还可以尝试通过运行 aspnet_regiis -iru 命令来修复安装。 (例如,如果在安装.NET Framework后安装 IIS,IIS 将无法正确配置为运行 ASP.NET 页。) 有关详细信息,请参阅 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 。 HTTP 错误 403.14 - 禁止访问Web 服务器配置为不列出此目录的内容。 如果请求 (受保护的资源(如 Web.config 文件) )或位于受保护 ((如 App_Data 或 App_Code) )的文件夹中,则会发生此错误。 HTTP 错误 404.17 - 未找到请求的内容显示为脚本,不会由静态文件处理程序提供服务。 如果服务器未正确配置为使用 .NET Framework 4 或更高版本,因此无法识别块中的@{ }代码,则会发生此错误。 请参阅前面有关 HTTP 错误 403 - 禁止访问的说明: 拒绝访问。 HTTP 错误 404.7 - 找不到请求筛选模块配置为拒绝文件扩展名 如果在服务器上显式阻止 .cshtml 或 .vbhtml 扩展,则会发生此错误。 此问题的一个症状是 URL 在不包含扩展时正常工作,但包含 .cshtml 或 .vbhtml 的 URL 不起作用。 一种可能的解决方案是在站点的 Web.config 文件中重新启用扩展。 以下示例演示如何启用 .cshtml 扩展。 HTTP 错误 404.8 - 找不到请求筛选模块配置为拒绝 URL 中包含 hiddenSegment 节的路径。 如果请求 (受保护的资源(如 Web.config 文件) )或位于受保护 ((如 App_Data 或 App_Code) )的文件夹中,则会发生此错误。 (“/”应用程序) 中的服务器错误,不会提供这种类型的页面请参阅前面有关 HTTP 错误 404.17 的说明。 Razor 代码的问题 名称“class”在当前上下文中不存在通常,出现此错误 class 的一个原因是引用了帮助程序,但未安装帮助程序。 例如,如果尝试使用帮助程序,但如果尚未从 NuGet 安装包,则会看到此错误。 使用 WebMatrix 中的库查找并安装帮助程序。 如果已安装帮助程序,但页面仍无法识别它,请尝试向代码添加 语句 using 。 在 语句中 using ,引用包含帮助程序的命名空间。 例如,ASP.NET Web 帮助程序包中的基本帮助程序位于 命名空间中 System.Web.Helpers 。 在想要使用帮助程序的页面顶部,添加以下行: @using Microsoft.Web.Helpers; 安全性和成员身份问题如果在 ASP.NET 网页 (Razor) 中使用内置安全 (成员身份) 系统,则可能会遇到以下问题。 若要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例此错误可能指示未配置任何 AspNetSqlMembershipProvider 类。 (一种症状是,站点在本地运行正常,但在将站点发布到托管提供商的服务器时会引发此错误。) 此问题的一个解决方法是通过将以下内容添加到站点 Web.config 文件来显式启用简单的成员身份: 发送Email时出现问题发送电子邮件的问题可能难以调试。 初始问题可能是无法连接到 SMTP 服务器。 如果连接成功,ASP.NET 将邮件交给 SMTP 服务器。 但是,邮件本身可能存在问题,导致 SMTP 服务器无法发送它。 如果应用程序未成功发送电子邮件,请尝试以下操作: SMTP 服务器名称通常类似于 smtp.provider.com 或 smtp.provider.net。 但是,如果将站点发布到托管提供程序,则此时的 SMTP 服务器名称可能是 localhost。 出现这种情况的原因是,在发布站点并在提供程序的服务器上运行后,从应用程序的角度来看,SMTP 服务器可能是本地服务器。 服务器名称的此更改可能意味着必须在发布过程中更改 SMTP 服务器名称。 端口号通常为 25。 但是,某些提供程序要求使用端口 587 或其他某些端口。 请与 SMTP 服务器的所有者核实他们期望你使用的端口号。 请确保使用正确的凭据。 如果已将网站发布到托管提供商,请使用提供商专门指示的电子邮件凭据。 这些凭据可能与用于发布的凭据不同。 有时根本不需要凭据。 如果你使用个人 ISP 发送电子邮件,则电子邮件提供商可能已经知道你的凭据。 发布后,可能需要使用与在本地计算机上测试时不同的凭据。 如果电子邮件提供商使用加密,请将 设置为 WebMail.EnableSsltrue。如果发送电子邮件时出错,你可能会看到标准 ASP.NET 错误消息,如下所示: 还可以使用 try-catch 块来调试发送电子邮件时出现的问题,如以下示例所示。 使用 try-catch 块时,ASP.NET 不显示其标准错误消息。 相反,可以在块的 部分中 catch 捕获错误。 var errorMessage = ""; try { // Initialize WebMail helper WebMail.SmtpServer = "your-SMTP-server-name"; WebMail.SmtpPort = 25; // Or the port you've been told to use WebMail.EnableSsl = false; WebMail.UserName = "your-login-name"; WebMail.Password = "your-password"; WebMail.From = "your-from-address"; WebMail.Send(to: test-To-address, subject: "Test email message", body: "This is a debug email message" ); } catch (Exception ex ) { errorMessage = ex.Message; } // Other code or markup here ... @if(!errorMessage.IsEmpty()){@errorMessage }替换 的相应值,以 your-SMTP-server-name类为 。 你可能会以这种方式看到的一些错误消息包括: 发送邮件失败。 \- 或 - 连接尝试失败,因为连接的一段时间后未正确响应,或者建立的连接失败,因为连接的主机无法响应 此错误通常意味着应用程序无法连接到 SMTP 服务器。 检查服务器名称和端口号。 邮箱不可用。 服务器响应为:5.1.0 发件人被拒绝:无效的发件人域 此消息可能指示 From 地址不正确或缺失。 指定的字符串不是电子邮件地址所需的格式。 此错误可能指示 或 From 属性的值To未识别为电子邮件地址。 (ASP.NET 无法检查电子邮件地址有效,只能使用正确的格式,如 [email protected].) 注意 在将页面发布到实时网站之前,删除显示错误 (@errorMessage) 的标记。 让用户看到从服务器获取的错误消息不是一个好主意。 其他资源ASP.NET 网页 (Razor) 常见问题解答 ASP.NET 网站上的 WebMatrix 和 ASP.NET 网页 论坛 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |